<?php
namespace app\adminapiv3\service\platform_manage;

use app\adminapiv3\service\BaseService;
use app\common\model\ConfigModel;
use app\common\service;
/**
 * @name: 服务器配置
 * @Param: 
 * @Description: 
 * @Author: foo
 * @Date: 2019-10-23 14:44:02
 */
class ConfigService extends BaseService
{
    public $config_type = '';//配置类型
    private $config_path = '';//配置路径
    private $write = true;//是否允许写入
    /**
     * @name: 规则写入
     * @Param: 
     * @Description: 
     * @Author: foo
     * @Date: 2019-09-20 16:02:25
     */
    public function configFwrite ($data)
    {
        $Config = new service\platform_manage\ConfigService();
        $Config->config_path = $this->config_path;//路径
        $Config->config_type = $this->config_type;//类型
        if (!$this->write)
        {
            $this->setError($this->CODE_FAIL, '该项配置不允许写入!!');
            return false;
        }
        $this->toDo([$Config, 'fWriteProcess'], [$data]);
    }

    /**
     * @name: 配置获取
     * @Param: 
     * @Description: 
     * @Author: foo
     * @Date: 2019-09-20 16:02:25
     */
    public function configFget ()
    {
        $Config = new service\platform_manage\ConfigService();
        $Config->config_path = $this->config_path;//路径
        $Config->config_type = $this->config_type;//类型
        $return = $this->toDo([$Config, 'fGetProcess']);

        return $return;
    }

    /**
     * @name: 检查配置类型
     * @Param: 
     * @Description: 
     * @Author: foo
     * @Date: 2019-10-23 14:46:28
     */
    public function checkConfigType ($type)
    {
        $Config = new ConfigModel();
        $return = $this->toDo([$Config, $type]);
        $this->config_type = $type;
        $this->config_path = $Config->config_path;
        $this->write = $Config->write;

        return $return;
    }

    /**
     * 日志参数转换
     * 登录设置: 限制次数
     * @param string $val 原值
    */
    public function logParamLoginFailCount($val){
        if(!$val){
            return '不限制';
        }
        return $val;
    }
    /**
     * 日志参数转换
     * 登录设置: 限制次数
     * @param string $val 原值
     */
    public function logParamLoginFailTime($val){
        if(!$val){
            return '不限制';
        }
        switch ($val){
            case '900':
                $val = '一刻钟';
                break;
            case '1800':
                $val = '半小时';
                break;
            case '3600':
                $val = '一小时';
                break;
            case '7200':
                $val = '两小时';
                break;
            case '14400':
                $val = '四小时';
                break;
            case '21600':
                $val = '六小时';
                break;
            case '28800':
                $val = '八小时';
                break;
            case '43200':
                $val = '十二小时';
                break;
            case '86400':
                $val = '二十四小时';
                break;
            default:
                $val = $val . '秒';

        }

        return $val;
    }

    /**
     * 日志参数转换
     * 白名单功能: 工作模式
     * @param string $val 原值
     */
    public function logParamIpWhiteSettingStatus($val){
        if($val){
            $val = '自动添加';
        }else{
            $val = '人工添加';
        }
        return $val;
    }

    /**
     * 日志参数转换
     * 白名单功能: 功能生效期
     * @param string $val 原值
     */
    public function logParamIpWhiteSettingTimeRange($val){
        switch ($val){
            case '0':
                $val = '永久';
                break;
            case '1':
                $val = '30分钟';
                break;
            case '2':
                $val = '1小时';
                break;
            case '3':
                $val = '8小时';
                break;
            case '4':
                $val = '16小时';
                break;
        }
        return $val;
    }

    /**
     * 日志参数转换
     * 白名单功能: 状态
     * @param string $val 原值
     */
    public function logParamSyslogStatus($val){
        return $val ? '开启' : '关闭';
    }

    /**
     * @name 获取ip白名单设置
     * @author wx
     * @date 2020/12/25 9:57
     */
    public function getIpWhiteSetting()
    {
        $configModle = new ConfigModel();
        $fileConfig = $configModle->ipWhiteSetting();

        $fileName = $configModle->config_path;

        if (!file_exists($fileName)) {
            foreach ($fileConfig as $v){
                $return[$v] = '0';
            }

            //写入配置文件
            file_put_contents($fileName,json_encode($return));
        }else{
            $content = file_get_contents($fileName);
            $return = json_decode($content, true);
        }

        return $return;
    }

}